Αυτή είναι η μία ερώτηση. Η άλλη είναι το "γιατί"? Αν η ερώτηση είναι "πως θα επικοινωνήσω μέσω XML Interface", το "γιατί" είναι απαραίτητο. Χρησιμοποιώντας XML χάνεις σε ταχύτητα και ευελιξία. Ένας λόγος που αρκετοί προγραμματιστές ζητάνε ένα XML interface είναι επειδή νομίζουν ότι θα κερδίσουν σε ευελιξία και θα γλυτώσουν από σημαντικές αλλαγές στον κώδικα όταν αλλάζουν τα πεδία της βάσης. Δυστυχώς, πετυχαίνουν το ακριβώς αντίθετο.
Δυστυχώς, η XML πετυχαίνει το ακριβώς αντίθετο αποτέλεσμα. Δεν πρόκειται για πρόβλημα του .NET ή του SQL Server αλλά της ιδέας γενικότερα. Η XML ΔΕΝ είναι interface. Στην κυριολεξία πρόκειται για angle-bracket delimited text. Η όποια σημασία έχει προέρχεται από αυτόν που φτιάχνει και αυτόν που διαβάζει το text αυτό.
Κάποιος πρέπει να δημιουργήσει το XML document μέσα στη εφαρμογή και κάποιος πρέπει να το διαβάσει μετά στη βάση και να το καταλάβει. Κάθε αλλαγή στα πεδία της βάσης σημαίνει ότι πρέπει να αλλάξει και ο κώδικας στη βάση και στην εφαρμογή. Επιπλέον, η επικοινωνία μέσω xml προκαλεί και σημαντική καθυστέρηση γιατί μεταφέρονται πολλαπλάσια δεδομένα τα οποία μετά θα πρέπει να τα επεξεργαστεί η βάση.
Αν όμως η ερώτηση είναι "μπορώ να στείλω και να αποθηκεύσω XML στη βάση?" η απάντηση είναι πολύ πιο εύκολη. Ο SQL Server έχει τύπο XML και το ADO.NET τον καταλαβαίνει. Είναι επίσης δυνατόν να εκτελέσει κανείς queries σε δεδομένα αυτού του τύπου. Απλά, δεν πρέπει να ξεχνάει κανείς ότι η XML ΔΕΝ είναι βάση δεδομένων. Η αναζήτηση σε δεδομένα XML θα είναι πολλές φορές πιο αργή απ' ότι σε πεδία πινάκων με indexes. Η XML είναι καλή για να αποθηκεύεις δεδομένα χωρίς αυστηρή δομή.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos